#!/bin/bash

# Electron-IM 环境设置脚本
# 适用于 macOS 和 Linux 系统

set -e  # 遇到错误时退出

echo "🚀 开始设置 Electron-IM 开发环境..."

# 检测操作系统
if [[ "$OSTYPE" == "darwin"* ]]; then
    OS="macOS"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
    OS="Linux"
else
    echo "❌ 不支持的操作系统: $OSTYPE"
    exit 1
fi

echo "📱 检测到操作系统: $OS"

# 检测 shell 类型
SHELL_CONFIG=""
if [[ "$SHELL" == *"zsh"* ]]; then
    SHELL_CONFIG="$HOME/.zshrc"
    SHELL_NAME="zsh"
elif [[ "$SHELL" == *"bash"* ]]; then
    SHELL_CONFIG="$HOME/.bashrc"
    SHELL_NAME="bash"
else
    echo "⚠️  无法检测到支持的 shell，请手动配置环境变量"
    SHELL_CONFIG=""
    SHELL_NAME="unknown"
fi

echo "🐚 检测到 shell: $SHELL_NAME"

# 检查是否已安装 nvm
if command -v nvm &> /dev/null; then
    echo "✅ nvm 已安装"
    NVM_VERSION=$(nvm --version)
    echo "📦 nvm 版本: $NVM_VERSION"
else
    echo "📥 正在安装 nvm..."
    
    # 下载并安装 nvm
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
    
    # 配置环境变量
    if [[ -n "$SHELL_CONFIG" ]]; then
        echo "🔧 配置 $SHELL_NAME 环境变量..."
        
        # 检查是否已经配置过
        if ! grep -q "NVM_DIR" "$SHELL_CONFIG"; then
            cat >> "$SHELL_CONFIG" << 'EOF'

# nvm 配置
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # 加载 nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # 加载 nvm bash_completion
EOF
            echo "✅ 环境变量已添加到 $SHELL_CONFIG"
        else
            echo "✅ 环境变量已存在于 $SHELL_CONFIG"
        fi
        
        # 重新加载配置文件
        source "$SHELL_CONFIG"
    else
        echo "⚠️  请手动添加以下内容到你的 shell 配置文件:"
        echo "export NVM_DIR=\"\$HOME/.nvm\""
        echo "[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\""
        echo "[ -s \"\$NVM_DIR/bash_completion\" ] && \. \"\$NVM_DIR/bash_completion\""
    fi
    
    echo "✅ nvm 安装完成"
fi

# 检查 Node.js 版本
if command -v node &> /dev/null; then
    NODE_VERSION=$(node -v)
    echo "📦 当前 Node.js 版本: $NODE_VERSION"
    
    # 检查是否是 v20
    if [[ "$NODE_VERSION" == v20* ]]; then
        echo "✅ Node.js 版本符合要求 (v20)"
    else
        echo "⚠️  Node.js 版本不是 v20，正在切换..."
        nvm install 20
        nvm use 20
        echo "✅ 已切换到 Node.js v20"
    fi
else
    echo "📥 正在安装 Node.js v20..."
    nvm install 20
    nvm use 20
    echo "✅ Node.js v20 安装完成"
fi

# 检查 pnpm
if command -v pnpm &> /dev/null; then
    PNPM_VERSION=$(pnpm --version)
    echo "📦 pnpm 已安装，版本: $PNPM_VERSION"
else
    echo "📥 正在安装 pnpm..."
    npm install -g pnpm
    echo "✅ pnpm 安装完成"
fi

# 设置 npm 镜像源（可选，提高下载速度）
echo "🌐 设置 npm 镜像源..."
npm config set registry https://registry.npmmirror.com

# 验证安装
echo ""
echo "🔍 验证安装结果:"
echo "Node.js 版本: $(node -v)"
echo "npm 版本: $(npm -v)"
echo "pnpm 版本: $(pnpm --version)"
echo "nvm 版本: $(nvm --version)"

echo ""
echo "🎉 环境设置完成！"
echo ""
echo "📋 接下来的步骤:"
echo "1. 如果这是新打开的终端，请运行: source $SHELL_CONFIG"
echo "2. 进入项目目录: cd Electron-IM"
echo "3. 安装依赖: pnpm install"
echo "4. 启动项目: pnpm dev"
echo ""
echo "💡 提示: 如果遇到权限问题，可能需要使用 sudo 运行某些命令" 